const express = require('express')
const router = express.Router()
// 链接数据库
const conn = require('../util/sql')
// token验证
const jwt = require('jsonwebtoken')
// post键值对传递
router.use(express.urlencoded())

const multer = require('multer')
// const upload = multer({dest:'uploads'})
// 精细化去设置，如何去保存文件
const storage = multer.diskStorage({
    // 保存在哪里
    destination: function (req, file, cb) {
        cb(null, 'uploads');
    },
    // 保存时，文件名叫什么
    filename: function (req, file, cb) {
        // console.log('file', file)
        // 目标： 新名字是时间戳+后缀名
        const filenameArr = file.originalname.split('.');
        // filenameArr.length-1是找到最后一个元素的下标
        const fileName = Date.now() + "." + filenameArr[filenameArr.length - 1]
        cb(null, fileName) //
    }
})

const upload = multer({
    storage
})
// 获取用户基本信息 
router.get('/userinfo', (req, res) => {
    // 1.获取参数
    console.log('获取用户基本信息接受的参数是', req.query);
    // 解构
    const {
        username
    } = req.query
    console.log(username);
    // 2.拼接SQL语句
    const sqlStr = `select * from users where username="${username}"`
    // console.log(sqlStr);
    // 3.执行sql语句
    conn.query(sqlStr, (err, result) => {
        // 4.根据不同结果返回响应
        if (err) {
            console.log(err);
            res.json({
                status: 1,
                message: "获取信息失败",
            })
            return
        }
        res.json({
            status: 0,
            message: "获取基本信息成功",
            data: result
        })
        console.log(result);
    })
    // res.send('ok')
})
// 更新用户信息
router.post('/userinfo', (req, res) => {
    console.log('更新用户信息接收的参数', req.body);
    // 解构
    const {
        id,
        nickname,
        email,
        userPic
    } = req.body
    // 2.拼接SQL语句
    // const sqlStr = `update users set ,email="${email}",userPic="${userPic}" where id="${id}"`
    let sqlStrUpdate = []
    if (nickname) {
        sqlStrUpdate.push(`nickname="${nickname}"`)
    }
    if (email) {
        sqlStrUpdate.push(`email="${email}"`)
    }
    if (userPic) {
        sqlStrUpdate.push(`userPic="${userPic}"`)
    }
    const sqlStrUpdate2 = sqlStrUpdate.join()
    // 3.执行sql语句
    const sqlStr = `update users set ${sqlStrUpdate2} where id="${id}"`
    conn.query(sqlStr, (err, result) => {
        // 4.根据不同结果返回响应
        if (err) {
            console.log(err);
            res.json({
                status: 1,
                message: "修改用户信息失败！",
            })
            return
        }
        res.json({
            status: 0,
            message: "修改用户信息成功！",
        })
        console.log(result);
    })
    // res.send('ok')
})
// 上传头像
router.post('/uploadPic', upload.single('file_data'), (req, res) => {
    console.log('上传头像接收的参数', req.file);
    res.json({
        status: 0,
        msg: "上传头像成功",
        message: "http://127.0.0.1:3000/uploads" + req.file.filename,
    })
})
// 重置密码
router.post('/updatepwd', (req, res) => {
    // 获取参数
    const {
        oldPwd,
        newPwd,
        id
    } = req.body
    // 拼接sql语句
    const sqlStr = `select password from users where id="${id}"`
    console.log(sqlStr);   
    conn.query(sqlStr, (err, result) => {
        // 判断新旧密码是否一致
        if (err) {
            console.log(err);
            res.json({
                status: 500,
                message: "服务器出错"
            })
            return
        }
        if (result.password !== oldPwd) {
            console.log(err);
            res.json({
                status: 1,
                message: "新旧密码不一致"
            })
            return
        }
    })

    // 修改新密码
    const sqlStrUpdate = `update users set password="${newPwd}" where id="${id}"`
    conn.query(sqlStrUpdate, (err, result) => {
        // 说明查询出错
        if (err) {
            console.log(err)
            res.json({
                status: 500,
                msg: "服务器错误"
            })
            return
        }

        res.json({
            status: 0,
            msg: "更新密码成功"
        })
    })
})
// 导出
module.exports = router










// 导出
module.exports = router